Se instaleaza node si npm ca aici.
Daca nu sunt instalate:
sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs git make g++ gcc
Pentru Raspberry Pi B si Zero:
Ca utilizator elvis:
Comenzile pentru Raspberry Pi se aplica numai dupa ce s-a instalat Node Red.
Se ia ultima versiune $NODE de aici
NODE=21.6.1 wget https://unofficial-builds.nodejs.org/download/release/v$NODE/node-v$NODE-linux-armv6l.tar.xz tar -xvf node-v$NODE-linux-armv6l.tar.xz sudo cp -R node-v$NODE-linux-armv6l/* /usr/local/ rm -rf node-v$NODE-linux-armv6l node-v$NODE-linux-armv6l.tar.xz sudo apt-get install -y git make g++ gcc
Se verifica:
node --version npm --version
Ca utilizator elvis se instaleaza zigbee2mqtt din github:
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt sudo chown -R elvis:elvis /opt/zigbee2mqtt
Se verifica dependentele:
cd /opt/zigbee2mqtt sudo npm ci
Se produce o serie de warning care se pot ignora.
Rezultatul ar trebui sa fie de forma:
node-pre-gyp info ok
added 383 packages in 111.613s
Se editeaza fisierul de configurare:
nano /opt/zigbee2mqtt/data/configuration.yaml
Se introduc datele corespunzatoare serverului MQTT: locatia, topicul si modul de autentificare:
homeassistant: false
permit_join: true
mqtt:
base_topic: zigbee2mqtt
server: ‘mqtt://localhost’
user: elvis
password: parola
Se salveaza si se inchide fisierul de configurare.
Se configureaza zigbee2mqtt ca serviciu:
sudo nano /etc/systemd/system/zigbee2mqtt.service
Se introduce urmatorul continut:
[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=elvis
[Install]
WantedBy=multi-user.target
Pentru Raspberry Pi locatia „ExecStart=/usr/bin/npm” este „ExecStart=/usr/local/bin/npm”.
Se salveaza si se inchide fisierul apoi se activeaza si se porneste serviciul:
sudo systemctl daemon-reload sudo systemctl enable zigbee2mqtt.service sudo systemctl start zigbee2mqtt.service sudo systemctl status zigbee2mqtt.service
Se imperecheaza dispozitivele (detalii aici)care se regasesc ulterior in fisierul de configurare:
homeassistant: false
permit_join: true
mqtt:
base_topic: zigbee2mqtt
server: ‘mqtt://localhost’
user: elvis
password: parola
serial:
port: /dev/ttyACM0
devices:
‘0x00158d0003fa6dd5’:
friendly_name: ‘0x00158d0003fa6dd5’
‘0x00158d0003ce8ad6’:
friendly_name: ‘0x00158d0003ce8ad6’
Se opreste serviciul pentru editarea fisierului:
sudo systemctl stop zigbee2mqtt.service nano /opt/zigbee2mqtt/data/configuration.yaml
Se editeaza permit_join: false si friendly_name apoi se salveaza fisierul.
Se creeaza scriptul pentru oprirea si repornirea dupa 5 secunde a serviciului:
sudo nano /root/zigbee2mqtt.sh
Se introduce comanda:
systemctl stop zigbee2mqtt.service && sleep 3 && systemctl start zigbee2mqtt.service
Se schimba proprietarul scriptului si se transforma in executabil:
sudo chown root:root /root/zigbee2mqtt.sh sudo chmod +x /root/zigbee2mqtt.sh
Se editeaza fisierul crontab pentru rularea la fiecare 15 minute a scriptului:
sudo crontab -e
Se introduce linia:
*/15 * * * * /root/zigbee2mqtt.sh > /dev/null 2>> /var/log/cron.log
Se salveaza si se inchide fisierul apoi se reporneste zigbee2mqtt:
sudo systemctl restart zigbee2mqtt.service